#define RST 2



void setup()
{ 
  Serial.begin(9600);       // start serial communication at 9600bps
  pinMode(RST,OUTPUT);
  reset();
initializeCmd();
//resetDefault();
 
 //reboot();
   //changePass();
   //masterMode();
     // getLocAddress();
       autoConnectMode();
     //discoverable();
    // setName();
   //discoverable();
   //   pairWith();
      //changePin();
     //chckBaud();
      //chckPaired();
     // btConnect();
      // btDisConnect();
     //obexSessio();
      //atCmdList();
     //getCurrentSetting();
      //deviceSearch();
     //exitCmdMode();

}

void obexSessio(){

Serial.write("\r\nAT+OPPCON=00:1b:33:d0:50:10,1024\r\n");
   delay(10000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}
void btDisConnect(){
Serial.write("\r\nAT+DCON=2,00:1b:33:d0:50:10\r\n");
   delay(10000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}
void pairWith(){
Serial.write("\r\nAT+BPAIR=,00:1b:33:d0:50:10\r\n");
   delay(30000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}

void reboot(){
Serial.write("\r\nAT+REBOOT\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}
void resetDefault(){
Serial.write("\r\nAT+F\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}

void changePin(){
Serial.write("\r\nAT+PIN=8888\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}

void chckPaired(){
Serial.write("\r\nAT+BPAIR=?\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }

}
void setName(){
Serial.write("\r\nAT+NAME=KiKK\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}
void chckBaud(){
  Serial.write("\r\nAT+BAUD=?\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}

void btConnect(){
Serial.write("\r\nAT+CON\r\n");
   delay(10000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}
void getLocAddress(){

Serial.write("\r\nAT+BLBDADDR\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}

void deviceSearch(){
Serial.write("\r\nAT+INQ\r\n");
   delay(10000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}
 void reset(){
    digitalWrite(RST,HIGH);
    delay(100);
    digitalWrite(RST,LOW);
    delay(1000);
    digitalWrite(RST,HIGH);
    delay(1000);
       if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.flush();
    Serial.println("Initialization/reset  :"+a);    
   }
 }

 void initializeCmd(){
   Serial.write("LLL");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }

 }
 void autoConnectMode(){
 Serial.write("\r\nAT+MODE=2\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
 }
 
 void masterMode(){
 Serial.write("\r\nAT+MODE=1\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
}

 
 void discoverable(){
   Serial.write("\r\nAT+BDISCMODE=3,180\r\n");
   delay(10000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
 }
 void exitCmdMode(){
 Serial.write("===");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
 }
 void atCmdList(){
  Serial.write("\r\nAT?\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
 }
 void getCurrentSetting(){
  Serial.write("\r\nAT+SETUP\r\n");
   delay(1000);
   if(Serial.available()>0){
    int temp=Serial.available();
    String a="";
    for(int i=0;i<temp;i++){
     a+=char(Serial.read());
    }
    Serial.println("\n recived msg:"+a);  
    Serial.flush();  
 }
 }
 
 String readA0(){
   String str = analogRead(A0)+"";
   delay(1);
   return str;
 }
 
void loop() {
delay(200);
Serial.println(analogRead(A0));
//delay(2000);
//Serial.println(" ");
//  chckPaired();
 // btConnect();
}
